/** 
*数据库操作辅助类,定义对象、数据操作方法都在这里定义 
*/ 

var dbname = 'websql';/*数据库名*/ 
var version = '1.0';/*数据库版本*/ 
var dbdesc = '本地数据库'; /*数据库描述*/ 
var dbsize = 2*1024*1024; /*数据库大小*/ 
var dataBase = null;/*暂存数据库对象*/ 
var selectLen = "";

/*数据库中的表单名*/ 
var websqlTable = "websqlTable";


/** 
 * 打开数据库 
 * @returns  dataBase:打开成功   null:打开失败 
 */ 
function websqlOpenDB(){
	  /*数据库有就打开 没有就创建*/ 
	dataBase = window.openDatabase(dbname,version,dbdesc,dbsize,function(){});
	if(dataBase){
		console.log("数据库创建/打开成功!");
	}else{
		alert("您的浏览器版本果旧,不支持HTML5本地数据库,请更换其他浏览器或者更新该浏览器！");
	}
	return dataBase; 
}


/** 
 * 新建数据库里面的表单 
 * @param tableName:表单名 
 */
function websqlCreatTable(tableName){
	var creatTableSQL =  'CREATE TABLE IF  NOT EXISTS '+tableName+' (rowid INTEGER PRIMARY KEY AUTOINCREMENT,PROID text, NAME text,PRICE text,NUM text,IMGURL text,GUIGE text)';
	dataBase.transaction(function(ctx,result){
		ctx.executeSql(creatTableSQL,[],function(ctx,result){
			console.log("表创建成功: " + tableName);
		},function(tx,error){
			console.log("表创建失败: " + tableName + error.message);
		});
		
	});
	
}


/** 
 * 往表单里面插入数据 
 * @param tableName:表单名 
 * @param PROID:商品id
 * @param NAME:商品名 
 * @param PRICE:商品单价
 * @param NUM:商品数量 
 * @param IMGURL:商品图片地址 
 * @param GUIGE:规格
 */ 

function websqlInsterDataToTable(tableName,PROID,NAME,PRICE,NUM,IMGURL,GUIGE){
	var insterTableSQL = 'INSERT INTO ' + tableName + ' (PROID,NAME,PRICE,NUM,IMGURL,GUIGE) VALUES (?,?,?,?,?,?)'; 
	dataBase.transaction(function(ctx){
		ctx.executeSql(insterTableSQL,[PROID,NAME,PRICE,NUM,IMGURL,GUIGE],function(ctx,result){
			console.log("插入" + tableName  + PROID + "成功"); 
		},function(tx,error){
			console.log('插入失败: ' + error.message);
		});
	});
}



/** 
 * 获取数据库一个表单里面的所有数据 
 * @param tableName:表单名 
 * 返回数据集合 
 */ 
function websqlGetAllData(tableName,callback){
	var selectALLSQL = 'SELECT * FROM ' + tableName; 
	dataBase.transaction(function(ctx){
		ctx.executeSql(selectALLSQL,[],function(ctx,result){
			console.log('查询成功: ' + tableName + result.rows.length); 
			len = result.rows.length;
			for(var i = 0;i < len;i++){
				callback(result.rows.item(i));
			}
		},function(tx,error){
			console.log('查询失败: ' + error.message); 
		});
	});
}


/** 
 * 获取数据库一个表单里面的部分数据 
 * @param tableName:表单名 
 * @param proid:商品id 
 */ 

function websqlGetAData(tableName,proid,callback){
	  var selectSQL = 'SELECT * FROM ' + tableName + ' WHERE PROID = ?';
	  dataBase.transaction(function(ctx){
		  ctx.executeSql(selectSQL,[proid],function(ctx,result){
			  console.log('查询成功: ' + tableName + result.rows.length);
			  selectLen = result.rows.length;
			  if(selectLen>0){
				  $("#numData").html(result.rows.item(0).NUM);//将数据条数展示页面
			  }
			  $("#lenData").html(selectLen);//将数据条数展示页面
			  callback();
		  });
	  },function(tx, error){
		  console.log('查询失败: ' + error.message); 
	  });
	 
}


/** 
 * 删除表单里的全部数据 
 * @param tableName:表单名 
 */ 
function websqlDeleteAllDataFromTable(tableName){ 
    var deleteTableSQL = 'DELETE FROM ' + tableName; 
    localStorage.removeItem(tableName); 
    dataBase.transaction(function (ctx,result) { 
        ctx.executeSql(deleteTableSQL,[],function(ctx,result){ 
        	console.log("删除表成功 " + tableName); 
        },function(tx, error){  
        	console.log('删除表失败:' + tableName + error.message); 
        }); 
    }); 
} 




/** 
 * 根据proid删除数据 
 * @param tableName:表单名 
 * @param proid:商品id
 */ 
function websqlDeleteADataFromTable(tableName,proid){
	 var deleteDataSQL = 'DELETE FROM ' + tableName + ' WHERE PROID = ?';
	 localStorage.removeItem(tableName);
	 dataBase.transaction(function (ctx,result){
		 ctx.executeSql(deleteDataSQL,[proid],function(ctx,result){
			 console.log("删除成功 " + tableName + proid); 
		 },function(tx, error){
			 console.log('删除失败:' + tableName  + proid + error.message); 
		 });
	 });
	
}



/** 
 * 根据proid修改数据 
 * @param tableName:表单名 
 * @param proid:商品id
 * @param num:数量 
 */ 


function websqlUpdateAData(tableName,proid,num){
	 var updateDataSQL = 'UPDATE ' + tableName + ' SET NUM = ? WHERE PROID = ?'; 
	 dataBase.transaction(function (ctx,result){
		 ctx.executeSql(updateDataSQL,[num,proid],function(ctx,result){
			 console.log("更新成功 " + tableName + proid +"数量:"+ num); 
		 },function(tx, error){
			 console.log('更新失败:' + tableName  + proid + error.message); 
		 });
	 });
	 
}





